<?php
// 评估硬盘健康分数
function evaluate_health($metrics) {
    // 权重分配
    $weights = [
        5   => 0.3,  // 重新分配扇区计数
        194 => 0.2,  // 温度
        7   => 0.15, // 寻道错误率
        197 => 0.15, // 待映射扇区数
        9   => 0.1,  // 通电时间
        4   => 0.1   // 启停计数
    ];
    $score = 100;
    // 简单示例：如超阈值则扣分
    if (isset($metrics[5]) && $metrics[5] > 5) $score -= 30;
    if (isset($metrics[194]) && $metrics[194] > 55) $score -= 20;
    if (isset($metrics[7]) && $metrics[7] > 0) $score -= 15;
    if (isset($metrics[197]) && $metrics[197] > 0) $score -= 15;
    if (isset($metrics[9]) && $metrics[9] > 40000) $score -= 10;
    if (isset($metrics[4]) && $metrics[4] > 10000) $score -= 10;
    $score = max(0, $score);
    $status = $score >= 80 ? '健康' : ($score >= 60 ? '预警' : '危险');
    $abnormal = [];
    if (isset($metrics[5]) && $metrics[5] > 5) $abnormal[] = '重映射扇区数';
    if (isset($metrics[194]) && $metrics[194] > 55) $abnormal[] = '温度';
    if (isset($metrics[7]) && $metrics[7] > 0) $abnormal[] = '寻道错误率';
    if (isset($metrics[197]) && $metrics[197] > 0) $abnormal[] = '待映射扇区数';
    if (isset($metrics[9]) && $metrics[9] > 40000) $abnormal[] = '通电时间';
    if (isset($metrics[4]) && $metrics[4] > 10000) $abnormal[] = '启停计数';
    return [
        'score' => $score,
        'status' => $status,
        'abnormal' => $abnormal
    ];
} 